/*编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀，返回空字符串 ""。

 

示例 1：

输入：strs = ["flower","flow","flight"]
输出："fl"
示例 2：

输入：strs = ["dog","racecar","car"]
输出：""
解释：输入不存在公共前缀。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。



C++用sort进行排序，排序的标准是 比较两个字符串，找到第一个不同的字母，比较这两字母的ascii大小，并顺序排序。
然后我们取排序后的数组的第一个字符串和最后一个字符串，一直比较他们的字母是否相同，相同就加入res字符串中，遇到第一个不同的字母就break出循环，然后直接返回res字符串就可。
为什么取第一个和最后一个呢？因为我们前面说了，必须所有的字符串都有那么的前缀，才存在这样的前缀，所以如果有一个字符串不满足，那他就会第一个字母就不相同，他要么排第一个要么排在最后，所以我们就能返回空字符串。如果有这样的前缀，我们需要找到它的长度，那么按照这样的排序，不会让拥有公共前缀的字符串放在第一个字符串和最后一个字符串之间，因此我们就能找到最长的公共前缀。
例如我们的方法可以让abb，a，abz，会排成a，abb，abz
*/

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        //判断是否为空
        if(strs.empty()) return string();
        //字符串排序
        sort(strs.begin(), strs.end());
        //进行赋值，查找首位字符前缀
        string st = strs.front(), en = strs.back();
        int i, num = min(st.size(), en.size());
        for(i = 0; i < num && st[i] == en[i]; i ++);
        return string(st, 0, i);
    }

};
